                             - 264 -

               3.     .

   ,         
         
  .       -
       ,  -
     /.  MS DOS    
   ,       (FCB) 
  .  FCB    ,  MS
DOS      ,   
         ,    
  .         
   ,   ,   
.
            -
,    FCB  ,  MS  DOS
   ,   
          -
  .           
 .       
  ,       -
.       / 
        ,   
FCB.  ,        -
        -
     ,     -
  FCB       -
 .
              .
          
  ,   MS DOS,      
  ,      ,  , 
     ..    ,    ,
    .       -
        FCB,  
   ,   MS  DOS    
.     FCB       
;           
        ,   
    .
     ,         MS
DOS        
.  MS DOS   16-   
   ""   DOS   -
 ,       .
      -    ,
         -
       .   
      MS DOS  ,    
   ASCII  0,       
   (    ASCIIZ).
           ,  
         -
 .        
        (..   
   ).      ,   
    ,   

                             - 265 -

  .         
,         
  .       , 
      .
          -
     ,      
 .          
  (disk  transfer area)  DTA.   ,  
  IBM PC      DTA  
,            
DTA.         DTA    -
 ,        
    .   , , 
 ,       
           DTA,
      .     5-2
     .

                             - 266 -

   5.3.1 /   .

       ,   
,         .    
            
,         -
  .

    .

           -
       . -
     7 .      X$,  
 Z      .  -
         -
  .       110,
 0 = A, 1 = B  ..      -
  ,    ,  
.     120  130  -
,        -
  .

100 DEF SEG         '    
110 NUM = 0         '  A
120 X$ = CHR$(180)+CHR$(14)+CHR$(178)+CHR$(NUM)+CHR$(205)+
         CHR(33)+CHR$(223)
130 Y = VARPTR(X$)  '   (  Y+1)
140 Z = PEEK(Y+1)+PEEK(Y+2)*256  '  
150 CALL Z          '  

    .

    EH  21H     -
.      (0 = A, 1 = B  ..)
  DL   .      AL  
  . ,      
 ,    2.   -
       [1.1.5].

   MOV  AH,0EH       ; 
   MOV  DL,1         ;   B
   INT  21H          ;   

    19H  21H       -
    .        
.    AL   ,  0 = A,
1 = B  ..

                             - 267 -

   5.3.2 / .

       ,         .
  ,      
0.          
  ,          
    (   ) 
E5H.         -
  .        -
    ,     
      .   
    .      -
   -  ,     -
     .

    .

          . 
         ,  
  ,    .    ,
         ,    
    1        
  (  -   Ctrl-Z - ASCII 26 -
       -
 ).   OPEN .  [5.3.3].
   ,  CLOSE   .    
       KILL.     
     .    
 ,  KILL "A:ACCOUNT.DAT".   ,   -
   ,     
 ,  KILL "A:\FINANCES\ACCOUNT.DAT".   
        
   .  ,     -
   ,    (  
   ) -    RMDIR.

    .

                
  ,    . 
              
     .  ,    
  ,     
 ,          
 .   ,        
   ,     -
      ,    
   .   ,    
     (      )  , 
        ,    
       .

 FCB:
    16H  21H    .  
FCB         DS:DX   .
   .        
 ,         
,          .

                             - 268 -

     ,  -
        ,     11H
 21H [5.2.1].         ,  -
      AL  0;  
,   AL  FF.    
 (,    ) [5.2.6] 
      [5.3.5].    
           
 .  :

;---  
FCB       DB    1,'MYFILE  DAT',25 DUP(0)

;---   
   MOV  AH,11H         ;  
   LEA  DX,FCB         ;DS:DX   FCB
   INT  21H            ; 
   CMP  AL,0           ;AL = 0   
   JE   WARN_USER      ; ,    
;--- 
   MOV  AH,16H         ;   
   INT  21H            ; 

        ,  -
   ,     
 .      [5.2.6].  -
  FCB    7- ,     FFH,
    5    ASCII  0,     
.       ,  
  1  .   ,  
 , :

FCB     DB     0FFH,5 DUP(0),2,1,'MYFILE  DAT',25 DUP(0)

     13H  21H  .    DS:DX
   FCB    .   
     ,   AL  FF,  0.   
        ( ,  
)           
  .  :

;---  
FCB    DB     1,'MYFILE  DAT',25 DUP(0)

;--- 
   MOV  AH,13H           ;   
   LEA  DX,FCB           ;DS:DX   FCB
   INT  21H              ; 
   CMP  AL,0FFH          ;  
   JE   DELETE_ERROR     ;   

  :
    3CH   21H         
    .  DS:DX      ,
              MS DOS,
   ,        
.     ASCII 0.  -
    [5.2.6]   CX (0 -     ).
  .        

                             - 269 -

  ,   AX     .  
         1,   AX
  ,     3,   
, 4 -         5 -  -
           .
,           ,
        ,     
.        -
  4EH  21H  .

;---  
PATH     DB     'B:LEVEL1\LEVEL2\FILENAME.EXT',0

;---    
   MOV  AH,4EH         ;   
   LEA  DX,PATH        ;DS:DX   
   INT  21H            ;  
   JNC  WARN_USER      ; ,  
;--- 
   MOV  AH,3CH         ;  
   MOV  CX,0           ; 
   INT  21H            ; 
   JC   OPEN_ERROR     ;   
   MOV  HANDLE,AX      ;  

     MS DOS 3.0       -
  .     5BH  21H. 
     ,     3CH,  -
 ,         , 
    .    
[7.2.5].
            
  41H  21H.    DS:DX     
,     .       -
.    .      
,     ;     AL  -
  2,       5 -      
.  ,          
        ;      
[5.2.6]   .  :

;---  
PATH    DB    'B:LEVEL1\LEVEL2\FILENAME.EXT',0

;--- 
   MOV  AH,41H         ;  
   LEA  DX,PATH        ;DS:DX   
   INT  21H            ; 
   JC   DELETE_ERROR   ;  

   MS DOS  3.0       (5AH 
21H)     "" .   
           ,  
    .     
           
    .    DS:DX    
   ,         
.       . 

                             - 270 -

   CX ( 0).     AX  
  ,         ,   
 AX      .   
     .       
  ,      MS DOS 3.0;
   [7.2.5]. ,     -
   -      
41H  (.   ).        
,    :

;---  
PATH   DB    'B:LEVEL1\LEVEL2\',12 DUP(0)

;---  
   MOV  AH,5AH         ; 
   LEA  DX,PATH        ;DS:DX   
   INT  21H            ;  
   JC   CREATION_ERROR ;   
    .
    .
   MOV  AH,41H         ; 
   LEA  DX,PATH        ;DS:DX   
   INT  21H            ;  
   JC   DELETION_ERROR ;   

                             - 271 -

   5.3.3 / .

   ""  -         ,
         -
  (),       
   .      -
    ,       -  .  
     .    ,  
MS DOS             
.  ,   ,    
.        -
,     .     
   ,       
.
        ,    
      .  MS DOS
2.1    99   ,  
  8 (        MS DOS
FILES).       15  . -
         . 
       ,   
,          ,  
         .   
     ,  
     ,  ,
   .

    .

              
 ,        .   
          
   .     ,
      ,      -
     .        
      . - 
  ,    ,       
.  -, ,   1,  , 
 ,       
  .  -       -
  , ..         -
 .     MYFILE.TXT   
 ,            2,
 

   OPEN "O",#2,"MYFILE.TXT"



   OPEN "MYFILE.TXT" FOR OUTPUT AS #2

,      2     #2.
   ,      -
  .      
,        0  6.  
  1    ,   
2.          8, 

                             - 272 -

        4  15.   
     ,   
  4      /.      
         F: 
  .  ,       
BASICA/F:10,     10  ,    -
   .
    , S:,    .   
      .      
128 ,     32767 .   
        -
 0,     .   -
         .
,       512    
 512 ,           .
 BASICA/S:512/F:10  10   512 .
   188       ,  
   7K .     
 ,       DOS.

 :
       OPEN      -
      .    -
:

   "O"         
   "I"         
   "R"         /

     ,    
   .   ,  
   ,          
.       ,  
 ,        
,   ,       , -
,   .
      ,     
  OPEN.       , 
          (..  , 
  ).        
,    ,   OPEN "I",#1,"A:\LE-
VEL1\LEVEL2\MYFILE.TXT".  ,    
      OPEN "R",#3,"MYFILE.TXT",52.  
          52    
.       FIELDS      52
,   .      -
     .      
      , -
      ,   
  512 .         1  
32767      128 .

  :
      OPEN     , 
  ,    .   ,  
"O"  "I",      INPUT    OUTPUT ( ),
,  OPEN "FILENAME" FOR INPUT AS #1.      
     :  OPEN "MYFILE.TXT" AS #2.

                             - 273 -

 ,     APPEND,   
    ,    -
  : OPEN "B:MYFILE.TXT" FOR APPEND AS #3.     
         
.       LEN = .  -
 OPEN "C:MYFILE.TXT" AS #1  LEN  = 52   
    52 .
               
.             OPEN
        , -
  .       -
 .

100 INPUT "Enter file name: ",F$  '  
110 IF INSTR(F$,".") <> 0 THEN 130  '  ?
120 IF LEN(F$) > 8 THEN 500 ELSE 150  ' 8 ?
130 IF LEN(F$) > 12 THEN 500      ' 12 ?
140 IF LEN(F$) - INSTR(F$,".") > 3 THEN 500 '  3-
150 OPEN F$ FOR INPUT AS #1       ' 
 .
 .
500 INPUT "Improper filename - enter another: ",F$
510 GOTO 110                 '  ,  

 :
      .       
 CLOSE.          
    CLOSE #1  CLOSE #1, #3.      
    .      ,  
   ,     .   -
,    END,  NEW,  RESET,  SYSTEM   RUN  
 ,     .    
        
.

    .

   MS  DOS       
,         -
           
.          , 
  .       -
  [5.3.2].

 FCB:
    0FH   21H      . 
       ,     
[5.3.5].   FCB       
   (0 =  , 1 = A  ..).   DS:DX  
  FCB,     .   AL
    0,      FF,    
.       0,   
  ,    .
             
 (  -  128  ),       
     (   , 
        ).  
       ,       
  .

                             - 274 -

         FCB,   DS:DX
   FCB    10H  21H.   
   ,       -
,     AL   0.        
          , 
      FF  AL.

;---  
FCB     DB     1,'FILENAMEEXT',25 DUP(0)

;--- 
   MOV  AH,0FH        ; 
   LEA  DX,FCB        ;DS:DX   FCB
   INT  21H           ; 
   CMP  AL,0          ;  
   JNE  OPEN_ERROR    ;  
    .
    .
;--- 
   MOV  AH,10H        ; 
   LEA  DX,FCB        ;DS:DX   FCB
   INT  21H           ; 
   CMP  AL,0          ;  
   JNE  CLOSE_ERROR   ;  

  :
          3DH   21H.
DS:DX    ,      , -
  ,   .     
  63-     ASCII 0.   AL 
   ,  0     , 1  -
 ,  2 -  /.   AX  -
 16-  ,     -
.        .
    1  -    ,
       
    :       
         
     .       -
,    .       0,
   .       -
,  AX  2  -        , 4 - 
      , 6 -    
  12 -         AL.  -
:

;---  
PATH    DB    'A:LEVEL1\FILENAME.EXT',0

;---   /
   MOV  AH,3DH         ; 
   MOV  AL,2           ;  /
   LEA  DX,PATH        ;DS:DX   
   INT  21H            ; 
   JC   OPEN_ERROR     ;   
   MOV  HANDLE,AX      ;  

                             - 275 -

     3EH   21H  ,   
 .         BX  -
 .       0,    
,    1,  AX  =  6,    
.

;--- 
   MOV  AH,3EH       ; 
   MOV  BX,HANDLE    ; 
   INT  21H          ; 
   JC   CLOSE_ERROR  ;   

    45H  21H      
    .     BX   
  ,   AX   .     46H
 21H       (  CX) 
   (   BX)  ,   
       ,   .

                             - 276 -

   5.3.4  ;      -
.

          
11-   .      
          ,
       .       
 ,       .

    .

        NAME.   
         . 
  ,     ,   -
  ,  NAME  "OLDFILE.EXT"  AS "NEWFILE.EXT".  
          .   
  ,     ,  
   .  , NAME "B:LEVEL1\OLDFILE.EXT"
AS "B:LEVEL1\NEWFILE.EXT"         LE-
VEL1.
   ,          
.      NAME  "B:LEVEL1\OLDFILE.EXT"  AS "NEWFI-
LE.EXT",       ,     
 .            
        NAME "A:SUBDIR1-
\OLDFILE.EXT" AS  "A:SUBDIR2\OLDFILE.EXT".     
     .   ,  
        ,   
      .    
    58 [5.4.8].

    .

   MS DOS   ,    -
  ,     .   
    ,     -
.

 FCB:
     17H  21H. DS:DX  
     .      
FCB,      11H ( ""    ).
       "?",    ,
    ,   .   ,
      ,  AL   FF,
  AL  =  0.       ACCOUNTS.DAT    
DEBTS.DAT.

;---  
FCB       DB      'FILENAMEEXT',25 DUP(0)
NEWNAME   DB      'NEWNAME EXT',   ;11   

;---      NEWNAME
      MOV  SI,OFFSET NEWNAME   ;DS:SI    
      MOV  AX,SEG FCB          ;ES:DI   FCB
      MOV  ES,AX               ;
      MOV  DI,OFFSET FCB       ;
      ADD  DI,11H              ;   11H
      MOV  CX,11               ;   11 

                             - 277 -

REP   MOVSB                    ; 11 
      LEA  DX,FCB              ;DS:DX   FCB
      MOV  AH,17H              ;  
      INT  21H                 ; 
      CMP  AL,0FFH             ;  
      JE   RENAME_ERROR        ;   

  :
    56H  21H    .
DS:DX    ,     -
    ( 63- )     ASCII  0.
ES:DI     ,     
 .    ,      , 
.      ,      
.         -
      ,   .  ,
  ,        ,  AX
  3 -      , 5 -   
   17 -       .
     ACCOUNTS.DAT    GAINS  
 LOSSES.

;---  
OLDPATH   DB   'A:GAINS\ACCOUNTS.DAT',0
NEWPATH   DB   'A:LOSSES\ACCOUNTS.DAT',0

;---  
   LEA  DX,OLDPATH          ;DS:DX    
   MOV  AX,SEG NEWPATH      ;ES:DI    
   MOV  ES,AX               ;
   MOV  DI,OFFSET NEWPATH   ;
   MOV  AH,56H              ; 
   INT  21H                 ; 
   JC   ERROR_ROUTINE       ;   

                             - 278 -

   5.3.5    .

     ,    ,  -
     .   -
           
   .  ,   
         
    .      -
    ,       
  .  MS DOS     
/   .

    .

   :
          ,      
,       -
,          .   FCB 
  ,  ,       
; MS DOS      -
  ,   .  ,    FCB
       FCB,
  .   FCB:

                             - 279 -

 (DB)      ,         
                        ,  1  =  A, 2 = B  ..
                         0,       
                     ,     0  
                      .

           ,     
(11 )                
                     (ASCII 32),    8 .   
                         . 
                         .

  (DW)    DOS     128 ,
                       0   127. , -
                        #129  
                     ,   #0   #1 ( 
                      ,        0).
                             
                           .     
                             
                         ,   -
                        FCB.

  (DW)     MS DOS,     
                       ,     .
                             ,  
                           
                     ,    .   -
                           ,
                           -
                        .     
                      512 ,    
                       512 .   -
                              80H
                     (128)        -
                     .       
                       .

  (DD)         . 
                           -
                     .

  (DW)           FCB.
                         [5.2.5].

  (DB)           
                       .    0
                      127.     #200, -
                           1,     
                       71 ((200 - 128) - 1).

  -     ,      ,
  (DD)          
                            ,  MS DOS
                          .      
                             
                           4-  .   
                          

                             - 280 -

                     MS DOS      -
                          .   , 
                          .

     ,     
    . 5-3.
      FCB       
.        ,    
       .    -
  ASCII 0.      FCB   (
  0FH   21H,      [5.3.3]) 
     . ,  FCB 
             128
     .     FCB
  ,  DS:DX   . -
   :

FCB      DB     1,'FILENAMEEXT',25 DUP(0)

   FCB  :

FCB           STRUC
DRIVE_NUM     DB     0
FILE_NAME     DB     8 DUP(?)
FILE_EXT      DB     3 DUP(?)
BLOCK_NUM     DW     0
RECORD_SIZE   DW     0
FILE_SIZE     DD     0
FILE_DATE     DW     0
RESERVED      DB     10 DUP(0)
CURRENT_REC   DB     0
RANDOM_REC    DD     0
FCB           ENDS

        FCB, -
     .      -
       :

   1.             
        .
   2.            
    ,  ,   -
         0 ( 
  FCB,      ).   
      128,   -
  ,     .
   3.              
           
(        
).

      [1.3.0]   
,      .    
    ,   -
 ,     .COM.   FCB  
  5CH     .   
COM    ORG   FCB     (
     DTA,   -
 ):

                             - 281 -

;---   
             ORG  5CH
FCB          LABEL   BYTE
DRIVE_NUM    DB   0
FILE_NAME    DB   8 DUP(?)
FILE_EXT     DB   3 DUP(?)
BLOCK_NUM    DW   0
RECORD_SIZE  DW   0
FILE_SIZE    DD   0
FILE_DATE    DW   0
RESERVED     DB   10 DUP(0)
CURRENT_REC  DB   0
RANDOM_REC   DD   0
             ORG  80H
DTA          LABEL   BYTE
             ORG  100H
             ASSUME CS:CSEG, DS:DSEG, SS:SSEG
              ...

    FCB       ,
  , ,     
   .      [5.2.6].
 FCB  7    ,    7  -
  .     FF,    
 .    5  ASCII 0,   
.         FCB
DS:DX        , 
    ,    FCB.     ,
 2 -   ,  1 -   :

FCB     DB     0FFH, 5 DUP(0),2,1,'FILENAMEEXT',25 DUP(0)

  :
           FCB.  
    ,    ,  
    DOS.  B:COMPILE\UTILITY\PASCAL
   PASCAL   UTILITY.  
  63 ,    .    
(     3DH  21H -  .   [5.3.3]),
DS:DX       .  -
           ,   
        16- 
   AX.        
     .

 :
        ,   -
        .   
      ,  
    .    -
     ,     -
.        
             
  ,       .   
 ,        -
       ,  
  [1.3.1].    , , 
    10000      
   10000  ,   .

                             - 282 -

        FCB      
     DTA.     
,       
     .       
  DTA    DTA.   
 ,        -
   DTA,     ,     -
.   DTA     DOS
         / -
   .     ,      
    .
    DTA    ,   -
 ,     DTA,    -
        .
          
        -
  DTA    .    -
,      ,      
. DTA           
(64K).
       DTA   1AH  -
 21H. DS:DX          DTA,  
  .    .  :

;---  
DTA      256 DUP (?)

;--- DTA
   LEA  DX,DTA      ;DS:DX   DTA
   MOV  AH,1AH      ;  DTA
   INT  21H         ; DTA

    2FH  21H    -
 DTA.      .   ES:BX 
   DTA.
         [1.3.0]    
 128-    DTA,    80H 
 9FH.        . -
   DTA       , 
     ,     -
.           
COM  ,   DS       
.   EXE    
,   DTA  .  ,   -
     DTA   
  2FH  21H.      ,   
 ES:BX   DTA.
     DTA         
 .       -
 ,     .    
     ,       
           ,  
 .

                             - 283 -

   5.3.6    .

          
     ,   
,     .   -
  128-  ,        80H 
    [1.3.0].  (   -
  DTA  ,      [5.3.5].) 
   ,     .
     ,      
 ,  ,      ,  
 . ,    -
   MS DOS   .    -
,    ,    'A:ACCT.-
BAK'       1,'ACCT     BAK'.  MS  DOS 
  ,      
  ,         -
  .        (par-
sing).

    .

         ,   
 .       -
     : .  ; , = +   -
.          : . ;
, = + \ < > | / " [ ] ,     -
  ( ASCII  1  31).
     29H   21H       .
DS:SI      81H  PSP.  ,   
     DS,   ES       PSP.
ES:DI       ,   
    .    AL -
     .     
0-3:

    0   1 =   
       1   1 = ,  , 
                FCB,       
       2   1 =    FCB    
                  
       3   1 =    FCB    -
                   

      ,   -
 .          , 
     .      
,  ,     (ASCII 32).   
   ,       
        FCB.  AL  1,
     *  ?  FF,    -
.
     DS:SI       ,  
  ,       81H.   
,         -
   .  ES:DI       
 FCB.      FCB      
,   ES:[DI]+1  .  , 
    FCB  PSP,    5CH:

                             - 284 -

;---  ,  FCB   5CH
;--- PSP
   MOV  AH,29H          ;
   MOV  SI,81H          ;
   MOV  DI,5CH          ;
   MOV  AL,1111B        ;
   INT  21H             ;
   MOV  AL,ES:[DI]+1    ;
   CMP  AL,32           ;
   JE   ERROR_ROUTINE   ;